package com.whales.lms.rms.scheduler;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.inject.Inject;

import org.springframework.stereotype.Component;

/**
 * Task 객체를 관리하는 Factory Class
 * 
 * <p>Scheduler에 등록할 Task를 등록 합니다.
 * XML로 등록 할 수도 있으나,<br> 
 * 개발자 error를 최소화 하기 위해 Class로 설계되어습니다.
 * <p> 
 */
@Component
public class TaskFactory {
    List<Task> taskList = new ArrayList<Task>();
    @Inject
    Task systemAliveCheckTask;
    @Inject
    Task systemOnOffTask;
    @Inject
    Task projectorLifeTimeUpdateTask;
    /**
     * <p>Bean이 생성될때 최초로 호출될 method</p>
     * 스케줄러에 등록될 task를 추가합니다.									   
     */
    @PostConstruct
    public void addTask(){
        taskList.add(systemOnOffTask);
        taskList.add(systemAliveCheckTask);
        taskList.add(projectorLifeTimeUpdateTask);
    }

    public List<Task> getTaskList() {
        return taskList;
    }
    
    public void setTaskList(List<Task> taskList) {
        this.taskList = taskList;
    }
}
